iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 0
2
自我挑戰組

30天認識軟體設計及架構系列 第 7

Day7 軟體設計及架構---設計模式介紹 Design Pattern

  • 分享至 

  • xImage
  •  

我知道網路上已經有很多介紹 Design Pattern 的文章,不過因為我想就我自己的經驗來講一下這一個部分,不過一樣不會介紹很多種,大概會講一些之前我在工作中使用過的,其實在上課時就有上過這些東西,但是一直到了我去工作之後看到別人的程式碼,然後自己跟著學習、模仿之後才發現這個東西真的要好好學,不然永遠打出來的程式碼都零零落落,別人讀不懂,自己可能過兩三個月回來看也看不懂的窘境,所以今天就讓我們來介紹一下吧!

設計模式(Design Pattern) 是軟體設計中對於「反覆出現」的問題,提出的解決方案,這個詞其實是從建築領域來的,之後才被引用到電腦科學。

設計模式並不是從程式面來解決問題,不是教你怎麼寫程式,而是讓你知道在什麼情況,要用什麼方式去解決。

就如我上述所提到的「反覆出現」,如果今天你看到程式碼有許多重複的地方,那這是不是就代表我們應該想出某種「模式」,來解決重複出現的這個問題,不然如果今天要改程式碼,重複的地方太多的話會造成修改的困難,也表示這個程式的強健度不夠,而設計模式為的就是讓程式的穩定度提高,在修改、擴充的時候每個物件的耦合度降低,讓軟體達到「軟」的真正境界,靈活度、適應變化的能力增加。

註: 演算法不能算是設計模式,因為演算法是為了解決計算上的問題。

說到設計模式,大家想到的一定是 Gof 的 Design Pattern,這本經典的書籍,如果大家有時間也可以參考看看,那究竟設計模式分成哪幾類呢?

  1. Creational

    • 抽象工廠 (Abstract Factory)
    • 構造器 (Builder Pattern)
    • 工廠方法 (Factory Method pattern)
    • 原型 (Prototype pattern)
    • 單例模式 (Singleton pattern)
  2. Structure

    • 配接器(Adapter pattern)
    • 橋接(Bridge pattern)
    • 組合(Composite pattern)
    • 裝飾(Decorator pattern)
    • 外觀(Façade pattern)
    • 享元(Flyweight pattern)
    • 代理(Proxy pattern)
  3. Behavior

    • 職責鏈(Chain-of-responsibility pattern)
    • 命令(Command pattern)
    • 翻譯(Interpreter pattern)
    • 疊代器(Iterator pattern)
    • 中介者(Mediator pattern)
    • 回憶(Memento pattern)
    • 觀察者(Observer pattern)
    • 狀態機(State pattern)
    • 策略(Strategy pattern)
    • 模板方法(Template method pattern)
    • 參觀者(Visitor)

參考資料:
https://openhome.cc/Gossip/DesignPattern/
https://zh.wikipedia.org/wiki/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F_(%E8%AE%A1%E7%AE%97%E6%9C%BA)


上一篇
Day 6 軟體設計及架構 --- Sequence Diagram (時序圖)
下一篇
Day 8 軟體設計及架構---設計模式 - 單例模式(Singleton)
系列文
30天認識軟體設計及架構10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言